/*
 * SoulUtil 
 * version:v0.0.1
 */

AjaxUtil = {
    // 判断是否登录
    isLogin: function (token) {
        return AjaxUtil.getJson("staff/isLogin");
    },

    preDeal: function (resp) { // 预处理请求结果
        if (resp == null) {
            SwalUtil.error("请求失败,请刷新浏览器后重试!");
            return null;
        }
        if (resp.code == 200) { // 成功
            return resp;
        }

        if (resp.code == 422) { // 还没有登录,跳转到登录的页面
            SwalUtil.error("您还没有登录,请先登录!");
            setTimeout(function () { // 延时2s后执行
                window.location.href = BaseConfig.loginUrl;
            }, 1500);
            return null;
        }
        if (resp.code == 403) { // 没有权限
            SwalUtil.error("没有权限,请联系管理员!");
            return null;
        }

        if (resp.code == 412) { // 参数错误!
            SwalUtil.error(resp.msg);
            return null;
        }

        SwalUtil.error(resp.msg);
        return null;
    },

    // 获取对象(get请求)
    getJson: function (url, params) {
        if (params) {
            url = BaseConfig.preUrl + url + '?token=' + BaseConfig.token + '&' + params;
        } else {
            url = BaseConfig.preUrl + url + '?token=' + BaseConfig.token
        }
        try {
            var obj = $.ajax({
                url: url,
                async: false,
                dataType: 'json',
                error: function () {
                    SwalUtil.error("请求失败,请刷新浏览器后重试!");
                    return null;
                }
            });

            return AjaxUtil.preDeal(obj.responseJSON);
        } catch (e) {
            SwalUtil.error("请求失败,请刷新浏览器后重试!");
            return null;
        }
    },

    // post获取json
    postJson: function (url, params) {
        try {
            var obj = $.ajax({
                url: BaseConfig.preUrl + url + '?token=' + BaseConfig.token,
                async: false,
                type: "POST",
                data: params,
                dataType: 'json',
                contentType: "application/x-www-form-urlencoded;charset=utf-8",
                error: function (responseText, status, statusText) {
                    console.log(statusText);
                    SwalUtil.error("请求失败,请刷新浏览器后重试!");
                    return null;
                }
            });
            return AjaxUtil.preDeal(obj.responseJSON);
        } catch (e) {
            SwalUtil.error("请求失败,请刷新浏览器后重试!");
            return null;
        }
    },
    /**
     * 提交带有文件的表单内容
     *
     * @param {Object}
     *            el
     * @param {Object}
     *            url
     * @param {Object}
     *            onSuccess
     */
    ajaxSubmit: function (el, url, onSuccess) {
        $(el).ajaxSubmit({
            type: 'POST',
            url: BaseConfig.preUrl + url + '?token=' + BaseConfig.token,
            dataType: "json", // 数据类型
            success: function (resp) {
                var resp = AjaxUtil.preDeal(resp);
                if (resp) {
                    onSuccess();
                }
            }
        });
    }
};

SwalUtil = {
    // 基础提示信息,1000ms后自动关闭
    basic: function (msg) {
        swal({
            title: msg,
            showConfirmButton: false,
            timer: 1000,
        }).then(function () {
        }, function (dismiss) {
        });
    },
    // 成功的提示消息,600ms后自动关闭
    success: function (msg) {
        swal({
            title: msg,
            type: "success",
            confirmButtonText: '确定',
            timer: 2000
        }).then(function () {
        }, function (dismiss) {
        });
    },
    // 错误的提示消息不自动关闭
    error: function (msg) {
        swal({
            title: msg,
            confirmButtonText: '确定',
            type: "error",
        });
    },
    // 确定提示框
    confirm: function (onConfirm, title, text) {
        if (!title) {
            title = '您确定要执行该操作吗?';
        }
        if (!text) {
            text = '该操作无法撤销!'
        }
        swal({
            title: title,
            text: text,
            type: 'warning',
            showCancelButton: true,
            confirmButtonText: '确定',
            cancelButtonText: '取消',
        }).then(onConfirm, function (dismiss) {
        });
    },
    // showLoading
    showLoading: function () {
        swal.showLoading();
    },
    // hideLoading
    hideLoading: function () {
        swal.hideLoading();
    }
};

ParamUtil = {
    // 获取GET参数
    getQueryString: function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null)
            return decodeURI(r[2]);
        return null;
    },
    // 校验是否是数字
    isNum: function (str) {
        var reg = new RegExp("^\d{n}$");
        return reg.test(str);
    }
};

FormatUtil = {
    // 将时间ms值转化为'yyyy-MM-dd'格式的字符串
    formatDate: function (ms) {
        var d = new Date(ms);
        var year = d.getFullYear();
        var month = d.getMonth() + 1;
        if (month < 10) {
            month = '0' + month;
        }
        var date = d.getDate();
        if (date < 10) {
            date = '0' + date;
        }
        return year + "-" + month + "-" + date;
    },

    // 将时间ms值转化为'HH:mm'格式的字符串
    formatTime: function (ms) {
        var d = new Date(ms);
        var hour = d.getHours();
        var minute = d.getMinutes();
        return hour + ":" + minute;
    },

    // 将时间ms值转化为'yyyy-MM-dd HH:mm:ss'格式的字符串
    formatDateTime: function (ms) {
        var d = new Date(ms);
        var year = d.getFullYear();
        var month = d.getMonth() + 1;
        if (month < 10) {
            month = '0' + month;
        }
        var date = d.getDate();
        if (date < 10) {
            date = '0' + date;
        }
        var hour = d.getHours();
        if (hour < 10) {
            hour = '0' + hour;
        }
        var minute = d.getMinutes();
        if (minute < 10) {
            minute = '0' + minute;
        }
        var second = d.getSeconds();
        if (second < 10) {
            second = '0' + second;
        }
        return year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second;
    },

    formatPreMonth: function (ms) {
        var d = new Date(ms);
        var year = d.getFullYear();
        var month = d.getMonth() + 1;
        if (month == 1) {
            month = 12;
            year--;
        } else {
            month--;
        }
        if (month < 10) {
            month = '0' + month;
        }
        var date = d.getDate();
        if (date < 10) {
            date = '0' + date;
        }
        return year + "-" + month + "-" + date;
    },
    // 将单位为分的金额格式化为2个小数
    formatMoney2: function (money) {
        return (money / 100).toFixed(2);
    },

    formatMoney: function (money) {
        var re = /^[0-9]+.?[0-9]*$/; // 判断字符串是否为数字 //判断正整数 /^[1-9]+[0-9]*]*$/
        if (!re.test(money)) {
            return 0;
        }
        // 判断商品价格
        var reg = /(^[-+]?[1-9]\d*(\.\d{1,2})?$)|(^[-+]?[0]{1}(\.\d{1,2})?$)/;
        if (!reg.test(money)) {
            return (money / 1).toFixed(2);
        } else {
            return money;
        }

    }

};

FormUtil = {
    createSelectItem: function (items, selected) {
        var str = '';
        for (var i in items) {
            if (items[i].value == selected) {
                str += '<option value="' + items[i].value + '" selected>' + items[i].name + '</option>';
            } else {
                str += '<option value="' + items[i].value + '">' + items[i].name + '</option>';
            }
        }
        return str;
    }
};

LogUtil = {
    log: function (msg, src) {
        if (BaseConfig.debug) {
            if (src) {
                console.log('[' + new Date().getTime() + '] >> ' + src + ':' + msg);
            } else {
                console.log('未指定模块输出:' + msg);
            }
        }
    }
};

SetUtil = {
    set2string: function (set) {
        var str = '';
        if (!set) {
            return str;
        }
        set.forEach(function (value, key, map) {
            str += value + '-';
        });
        return str.substring(0, str.length - 1)
    },
    string2set: function (str) {
        var set = new Set();
        if (!str) {
            return set;
        }
        var arr = str.split("-");
        for (var i = 0; i < arr.length; i++) {
            set.add(arr[i]);
        }
        return set;
    },
    addString: function (old, str) {
        var set = SetUtil.string2set(old);
        set.add(str);
        return SetUtil.set2string(set);
    }
};

FileinputUtil = {
    /**
     * 初始化图片上传插件(fileinput)
     * el:jQuery选择器
     * module:即将上传到服务器的模块名
     * maxFileCount:最大的文件数量
     */
    init: function (el, module, maxFileCount) {
        LogUtil.log('开始初始化图片上传插件:使用参数-->el:' + el + ';module:' + module + ';maxFileCount:' + maxFileCount, 'FileinputUtil#init()')
        $(el + '_fileinput').fileinput({
            language: 'zh', // 设置语言
            uploadUrl: BaseConfig.preUrl + 'upload/image?module=' + module + '&token=' + BaseConfig.token, // 上传的地址
            allowedFileExtensions: ['jpg', 'gif', 'png'], // 接收的文件后缀
            fileActionSettings: {
                showUpload: false,
                showRemove: false,
            },
            showUpload: true, // 是否显示上传按钮
            showCaption: true, // 是否显示标题
            showRemove: true,
            showUploadedThumbs: true,
            maxFileCount: maxFileCount, // 表示允许同时上传的最大文件个数
            enctype: 'multipart/form-data',
            msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}！",
        }).on('fileuploaded', function (event, data, previewId, index) {
            LogUtil.log('用户点击了上传文件按钮', 'FileinputUtil#init()->onFileuploaded')
            var resp = data.response;
            if (resp && resp.code == 200) {
                var photostr = SetUtil.addString($(el).val(), resp.obj);
                LogUtil.log(el + '=' + photostr, 'FileinputUtil#init()->onFileuploaded')
                $(el).val(photostr);
            }
            ;
        }).on('filecleared', function (event) { // 清除文件
            LogUtil.log('用户点击了移除按钮', 'FileinputUtil#init()->onFilecleared')
            $(el).val('');
        });
    }
}

/**
 * 创建单表格的页面
 *
 * @param options
 */
SingleTablePageCreateUtil = {
    createInstance: function (options) {
        var page = {};
        page.options = options;
        page.init = function () {
            LogUtil.log('开始执行自动构建页面...', 'SingleTablePageCreateUtil#createInstance->init()');
            if (!page.options) {
                LogUtil.log('页面对象为空,结束程序!', 'SingleTablePageCreateUtil#createInstance->init()');
                return;
            } else {
                LogUtil.log('页面对象存在,正在执行自动构建页面...', 'SingleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始设置标题...', 'SingleTablePageCreateUtil#createInstance->init()');
            TablePageCreatePublicUtil.setTitle(page.options.title);

            LogUtil.log('开始创建表格页面元素(Dom)...', 'SingleTablePageCreateUtil#createInstance->init()');
            SingleTablePageCreateUtil.createSingleTableDom(page.options.module);

            LogUtil.log('开始创建查询区域...', 'SingleTablePageCreateUtil#createInstance->init()');
            if (page.options.query && page.options.query.length != 0) {
                var queryStr = '<form class="form-inline" role="form">';
                for (var i = 0; i < page.options.query.length; i++) {
                    queryStr += TablePageCreatePublicUtil.createQueryElement(page.options.query[i]);
                }
                queryStr += '<button type="submit" class="btn btn-default">查询</button></form>';
                $('#' + options.module + '_query').html(queryStr);
            } else {
                LogUtil.log('不包含查询区域,跳过', 'SingleTablePageCreateUtil#createInstance->init()');

            }

            LogUtil.log('开始创建默认增删改模块...', 'SingleTablePageCreateUtil#createInstance->init()');
            var firstToolBar = [];
            if (page.options.defaultToolBar) { // 主模块
                LogUtil.log('包含默认增删改模块,开始执行...', 'SingleTablePageCreateUtil#createInstance->init()');
                if (options.defaultToolBar.back) {
                    LogUtil.log('默认返回模块开启-->开始生成工具栏返回按钮', 'SingleTablePageCreateUtil#createInstance->init()');
                    var backToolBar = {
                        name: '',
                        glyphicon: 'chevron-left',
                        onclick: "window.history.go(-1)"
                    };
                    LogUtil.log('自动创建返回模块结束!', 'SingleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(backToolBar);
                } else {
                    LogUtil.log('不包含默认返回模块', 'SingleTablePageCreateUtil#createInstance->init()');
                }
                LogUtil.log('包含默认增删改模块,开始执行...', 'SingleTablePageCreateUtil#createInstance->init()');
                if (options.defaultToolBar.add) {
                    LogUtil.log('默认增加模块开启-->开始生成工具栏添加按钮', 'SingleTablePageCreateUtil#createInstance->init()');
                    var addToolBar = {
                        name: '添加',
                        glyphicon: 'plus',
                        onclick: options.module + '.addUI'
                    };
                    LogUtil.log('工具栏添加按钮处理完毕-->开始处理添加模态框', 'SingleTablePageCreateUtil#createInstance->init()');
                    var addModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module + '_modal_add"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar.dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>添加对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module + '_form_add" class="form-horizontal"  role="form">';
                    var columns = options.columns;
                    if (options.defaultToolBar.extraColumns) {
                        columns = columns.concat(options.defaultToolBar.extraColumns);
                    }
                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].add_form) { // 该元素需要添加到模态框
                            addModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].add_form, columns[i].title, columns[i].field, options.defaultToolBar.dialogSetting);
                        }
                    }
                    addModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module + '.add()">保存</button></div></div></div></div>';
                    $('body').append(addModelStr);
                    LogUtil.log('自动创建增加模块结束!', 'SingleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(addToolBar);
                } else {
                    LogUtil.log('不包含默认增加模块', 'SingleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar.edit) {
                    LogUtil.log('默认修改模块开启-->生成工具栏修改按钮', 'SingleTablePageCreateUtil#createInstance->init()');
                    var editToolBar = {
                        name: '修改',
                        glyphicon: 'edit',
                        onclick: options.module + '.editUI'
                    };
                    LogUtil.log('工具栏修改按钮处理完毕-->开始处理修改模态框', 'SingleTablePageCreateUtil#createInstance->init()');
                    var editModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module + '_modal_edit"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar.dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>修改对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module + '_form_edit" class="form-horizontal"  role="form">';
                    var columns = options.columns;
                    if (options.defaultToolBar.extraColumns) {
                        columns = columns.concat(options.defaultToolBar.extraColumns);
                    }
                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].edit_form) { // 该元素需要添加到模态框
                            editModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].edit_form, columns[i].title, columns[i].field, options.defaultToolBar.dialogSetting);
                        }
                    }
                    editModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module + '.edit()">保存</button></div></div></div></div>';
                    $('body').append(editModelStr);
                    LogUtil.log('自动创建修改模块结束!', 'SingleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(editToolBar);
                } else {
                    LogUtil.log('不包含默认修改模块', 'SingleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar.remove) {
                    LogUtil.log('默认删除模块开启->生成工具栏删除按钮', 'SingleTablePageCreateUtil#createInstance->init()');
                    var removeToolBar = {
                        name: '删除',
                        glyphicon: 'remove',
                        onclick: options.module + '.removeUI'
                    };
                    LogUtil.log('工具栏删除按钮处理完毕', 'SingleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(removeToolBar);
                } else {
                    LogUtil.log('不包含默认删除模块', 'SingleTablePageCreateUtil#createInstance->init()');
                }
            } else {
                LogUtil.log('不包含默认增删改模块', 'SingleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始创建额外的工具栏...', 'SingleTablePageCreateUtil#createInstance->init()');
            var firstExtraToolBar = options.extraToolBar;
            if (firstExtraToolBar) {
                LogUtil.log('包含额外的工具栏,开始执行...', 'SingleTablePageCreateUtil#createInstance->init()');
                for (var i = 0; i < firstExtraToolBar.length; i++) {
                    var tempFunctionName = 'extraToolbar' + i;
                    eval('page.' + tempFunctionName + ' = firstExtraToolBar[i].onclick'); // 创建动态方法名的方法
                    firstExtraToolBar[i].onclick = page.options.module + '.' + tempFunctionName;
                }
                firstToolBar = firstToolBar.concat(firstExtraToolBar);
            } else {
                LogUtil.log('不包含额外的工具栏', 'SingleTablePageCreateUtil#createInstance->init()');
            }

            if (firstToolBar && firstToolBar.length > 0) {
                LogUtil.log('按钮组存在,正在生成按钮组...', 'SingleTablePageCreateUtil#createInstance->init()');
                TablePageCreatePublicUtil.createToolBar(firstToolBar, page.options.module);
            } else {
                LogUtil.log('按钮组不存在,跳过', 'SingleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始初始化表格', 'SingleTablePageCreateUtil#createInstance->init()');
            var listUrl = BaseConfig.preUrl + page.options.module + '/list?token=' + BaseConfig.token;
            if (options.extraParam && options.extraParam.length > 0) {
                var paramStr = '';
                for (var i = 0; i < options.extraParam.length; i++) {
                    paramStr += options.extraParam[i].name + '=' + options.extraParam[i].value + '&';
                }
                listUrl = BaseConfig.preUrl + page.options.module + '/list?' + paramStr + 'token=' + BaseConfig.token;
            }
            $('#' + page.options.module + '_table').bootstrapTable({
                url: listUrl, // 请求后台的URL（*）
                responseHandler: function (res) {
                    if (!res || res.code != '200') {
                        return [];
                    }
                    return res.obj;
                },
                method: 'get', // 请求方式（*）
                toolbar: '#' + page.options.module + '_toolbar', // 工具按钮用哪个容器
                striped: true, // 是否显示行间隔色,默认为false
                cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true, // 是否显示分页（*）
                sidePagination: "client", // 分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1, // 初始化加载第一页，默认第一页
                pageSize: 10, // 每页的记录行数（*）
                pageList: [10, 25, 50, 100], // 可供选择的每页的行数（*）
                search: true, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端
                showColumns: true, // 是否显示内容列下拉框
                showRefresh: true, // 是否显示刷新按钮
                clickToSelect: true, // 是否启用点击选中行
                smartDisplay: true, // 智能显示分页按钮
                columns: page.options.columns,
            });
            LogUtil.log('初始化表格结束', 'SingleTablePageCreateUtil#createInstanceSingleTablePage->init()');
            LogUtil.log('创建单表格页面成功!!!', 'SingleTablePageCreateUtil#createInstanceSingleTablePage->init()');
        };
        page.addUI = function () {
            LogUtil.log('用户点击添加按钮', 'page#addUI()');
            $('#' + page.options.module + '_modal_add').modal('show');
        };
        page.add = function () {
            LogUtil.log('用户点击添加保存按钮', 'page#add()');
            var model = $('#' + page.options.module + '_form_add').serialize();
            LogUtil.log('添加表单的内容->' + model, 'SingleTablePageCreateUtil#add()');
            if (options.extraParam && options.extraParam.length > 0) {
                var paramStr = '';
                for (var i = 0; i < options.extraParam.length; i++) {
                    paramStr += '&' + options.extraParam[i].name + '=' + options.extraParam[i].value;
                }
                model += paramStr;
            }
            var resp = AjaxUtil.postJson(page.options.module + '/add', model);
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module + '_table').bootstrapTable('refresh');
                $('#' + page.options.module + '_form_add')[0].reset();
                $('#' + page.options.module + '_modal_add').modal('hide');
            }
        };
        page.editUI = function () {
            LogUtil.log('用户点击修改按钮', 'page#editUI()');
            var rows = $('#' + page.options.module + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要修改的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能修改一条记录!");
                return;
            } else {
                $('#' + page.options.module + '_form_edit').autofill(rows[0]);
                $('#' + page.options.module + '_modal_edit').modal('show');
            }
        };
        page.edit = function () {
            LogUtil.log('用户点击修改保存按钮', 'page#edit()');
            var model = $('#' + options.module + '_form_edit').serialize();
            LogUtil.log('修改后的表单的内容->' + model, 'page#edit()');
            var resp = AjaxUtil.postJson(page.options.module + '/edit', model);
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module + '_table').bootstrapTable('refresh');
                $('#' + page.options.module + '_form_edit')[0].reset();
                $('#' + page.options.module + '_modal_edit').modal('hide');
            }
        };
        page.removeUI = function () {
            LogUtil.log('用户点击删除按钮', 'page#removeUI()');
            var rows = $('#' + page.options.module + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要删除的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能删除一条记录!");
                return;
            }
            SwalUtil.confirm(function () {
                LogUtil.log('确定删除->' + rows[0], 'page#remove()');
                var resp = AjaxUtil.postJson(page.options.module + '/remove', rows[0]);
                if (resp) {
                    SwalUtil.success(resp.msg);
                    $('#' + page.options.module + '_table').bootstrapTable('refresh');
                }
            });
        };
        page.init();
        return page;
    },

    // 私有方法,不需要暴露//////////////////////////////////////////////////////////////////
    createSingleTableDom: function (module) { // 生成表格Dom节点
        var tableStr = '<div style="margin-top:10px" class="panel panel-default"><div id="' + module + '_query" style="padding-bottom : 0px" class="panel-body"></div><div class="panel-body"><table id="' + module + '_table"></table></div></div>';
        $('body').append(tableStr);
        LogUtil.log('创建表格页面元素(Dom)成功!', 'PageCreateUtil#createSingleTableDom()');
    },
}

/**
 * 创建双表格的页面
 *
 * @param options
 */
DoubleTablePageCreateUtil = {
    createInstance: function (options) {
        var page = {};
        page.options = options;

        page.init = function () {
            LogUtil.log('开始执行自动构建页面...', 'DoubleTablePageCreateUtil#createInstance->init()');
            if (!page.options) {
                LogUtil.log('页面对象为空,结束程序!', 'DoubleTablePageCreateUtil#createInstance->init()');
                return;
            } else {
                LogUtil.log('页面对象存在,正在执行自动构建页面...', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始设置标题...', 'DoubleTablePageCreateUtil#createInstance->init()');
            TablePageCreatePublicUtil.setTitle(page.options.title);

            LogUtil.log('开始创建表格页面元素(Dom)...', 'DoubleTablePageCreateUtil#createInstance->init()');
            DoubleTablePageCreateUtil.createDoubleTableDom(page.options.module, page.options.column);

            LogUtil.log('开始创建默认增删改模块...', 'DoubleTablePageCreateUtil#createInstance->init()');
            var firstToolBar = [];
            if (page.options.defaultToolBar[0]) { // 主模块
                LogUtil.log('包含默认增删改模块,开始执行...', 'DoubleTablePageCreateUtil#createInstance->init()');
                if (options.defaultToolBar[0].add) {
                    LogUtil.log('默认增加模块开启-->开始生成工具栏添加按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var addToolBar = {
                        name: '添加',
                        glyphicon: 'plus',
                        onclick: options.module[0] + '.addUI'
                    };
                    LogUtil.log('工具栏添加按钮处理完毕-->开始处理添加模态框', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var addModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module[0] + '_modal_add"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar[0].dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>添加对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module[0] + '_form_add" class="form-horizontal"  role="form">';
                    var columns = options.columns[0];
                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].add_form) { // 该元素需要添加到模态框
                            addModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].add_form, columns[i].title, columns[i].field, options.defaultToolBar[0].dialogSetting);
                        }
                    }
                    addModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module[0] + '.add()">保存</button></div></div></div></div>';
                    $('body').append(addModelStr);
                    LogUtil.log('自动创建增加模块结束!', 'DoubleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(addToolBar);
                } else {
                    LogUtil.log('不包含默认增加模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar[0].edit) {
                    LogUtil.log('默认修改模块开启-->生成工具栏修改按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var editToolBar = {
                        name: '修改',
                        glyphicon: 'edit',
                        onclick: options.module[0] + '.editUI'
                    };
                    LogUtil.log('工具栏修改按钮处理完毕-->开始处理修改模态框', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var editModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module[0] + '_modal_edit"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar[0].dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>修改对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module[0] + '_form_edit" class="form-horizontal"  role="form">';
                    var columns = options.columns[0];
                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].edit_form) { // 该元素需要添加到模态框
                            editModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].edit_form, columns[i].title, columns[i].field, options.defaultToolBar[0].dialogSetting);
                        }
                    }
                    editModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module[0] + '.edit()">保存</button></div></div></div></div>';
                    $('body').append(editModelStr);
                    LogUtil.log('自动创建修改模块结束!', 'DoubleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(editToolBar);
                } else {
                    LogUtil.log('不包含默认修改模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar[0].remove) {
                    LogUtil.log('默认删除模块开启->生成工具栏删除按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var removeToolBar = {
                        name: '删除',
                        glyphicon: 'remove',
                        onclick: options.module[0] + '.removeUI'
                    };
                    LogUtil.log('工具栏删除按钮处理完毕', 'DoubleTablePageCreateUtil#createInstance->init()');
                    firstToolBar.push(removeToolBar);
                } else {
                    LogUtil.log('不包含默认删除模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
            } else {
                LogUtil.log('不包含默认增删改模块', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始创建额外的工具栏...', 'DoubleTablePageCreateUtil#createInstance->init()');
            var firstExtraToolBar = options.extraToolBar[0];
            if (firstExtraToolBar) {
                LogUtil.log('包含额外的工具栏,开始执行...', 'DoubleTablePageCreateUtil#createInstance->init()');
                for (var i = 0; i < firstExtraToolBar.length; i++) {
                    var tempFunctionName = 'extraToolbar' + i;
                    console.log(tempFunctionName)
                    eval('page.' + tempFunctionName + ' = firstExtraToolBar[i].onclick'); // 创建动态方法名的方法
                    firstExtraToolBar[i].onclick = page.options.module[0] + '.' + tempFunctionName;
                }
                firstToolBar = firstToolBar.concat(firstExtraToolBar);
            } else {
                LogUtil.log('不包含额外的工具栏', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            if (firstToolBar && firstToolBar.length > 0) {
                LogUtil.log('按钮组存在,正在生成按钮组...', 'DoubleTablePageCreateUtil#createInstance->init()');
                TablePageCreatePublicUtil.createToolBar(firstToolBar, page.options.module[0]);
            } else {
                LogUtil.log('按钮组不存在,跳过', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始初始化表格', 'DoubleTablePageCreateUtil#createInstance->init()');
            $('#' + page.options.module[0] + '_table').bootstrapTable({
                url: BaseConfig.preUrl + page.options.module[0] + '/list?token=' + BaseConfig.token, // 请求后台的URL（*）
                responseHandler: function (res) {
                    if (!res || res.code != '200') {
                        return [];
                    }
                    return res.obj;
                },
                method: 'get', // 请求方式（*）
                toolbar: '#' + page.options.module[0] + '_toolbar', // 工具按钮用哪个容器
                striped: true, // 是否显示行间隔色,默认为false
                cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true, // 是否显示分页（*）
                sidePagination: "client", // 分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1, // 初始化加载第一页，默认第一页
                pageSize: 10, // 每页的记录行数（*）
                pageList: [10, 25, 50, 100], // 可供选择的每页的行数（*）
                search: true, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端
                showColumns: true, // 是否显示内容列下拉框
                showRefresh: true, // 是否显示刷新按钮
                clickToSelect: true, // 是否启用点击选中行
                smartDisplay: true, // 智能显示分页按钮
                columns: page.options.columns[0],
                onClickRow: page.options.onFirstClickRow
            });

            var secondToolBar = [];
            if (page.options.defaultToolBar[1]) { // 第二模块
                LogUtil.log('包含默认增删改模块,开始执行...', 'DoubleTablePageCreateUtil#createInstance->init()');
                if (options.defaultToolBar[1].add) {
                    LogUtil.log('默认增加模块开启-->开始生成工具栏添加按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var addToolBar = {
                        name: '添加',
                        glyphicon: 'plus',
                        onclick: options.module[0] + '.second.addUI'
                    };
                    LogUtil.log('工具栏添加按钮处理完毕-->开始处理添加模态框', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var addModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module[1] + '_modal_add"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar[1].dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>添加对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module[1] + '_form_add" class="form-horizontal"  role="form">';
                    var columns = options.columns[1];

                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].add_form) { // 该元素需要添加到模态框
                            addModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].add_form, columns[i].title, columns[i].field, options.defaultToolBar[0].dialogSetting);
                        }
                    }
                    addModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module[0] + '.second.add()">保存</button></div></div></div></div>';
                    $('body').append(addModelStr);
                    LogUtil.log('自动创建增加模块结束!', 'DoubleTablePageCreateUtil#createInstance->init()');
                    secondToolBar.push(addToolBar);
                } else {
                    LogUtil.log('不包含默认增加模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar[1].edit) {
                    LogUtil.log('默认修改模块开启-->生成工具栏修改按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var editToolBar = {
                        name: '修改',
                        glyphicon: 'edit',
                        onclick: options.module[0] + '.second.editUI'
                    };
                    LogUtil.log('工具栏修改按钮处理完毕-->开始处理修改模态框', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var editModelStr = '<div class="modal fade" data-backdrop="static" id="' +
                        options.module[1] + '_modal_edit"><div class="modal-dialog" style="width:' +
                        options.defaultToolBar[1].dialogSetting.modalWidth + 'px"><div class="modal-content"><div class="modal-header"><button class="close" data-dismiss="modal"><span>&times;</span></button><h4 class="modal-title"><b>修改对话框</b></h4></div><div class="modal-body"><form id="' +
                        options.module[1] + '_form_edit" class="form-horizontal"  role="form">';
                    var columns = options.columns[1];
                    for (var i = 0; i < columns.length; i++) {
                        if (columns[i].edit_form) { // 该元素需要添加到模态框
                            editModelStr += TablePageCreatePublicUtil.createFormElement(columns[i].edit_form, columns[i].title, columns[i].field, options.defaultToolBar[1].dialogSetting);
                        }
                    }
                    editModelStr += '</form></div><div class="modal-footer"><button class="btn btn-default" data-dismiss="modal">取消</button><button class="btn btn-primary" onclick="' + options.module[0] + '.second.edit()">保存</button></div></div></div></div>';
                    $('body').append(editModelStr);
                    LogUtil.log('自动创建修改模块结束!', 'DoubleTablePageCreateUtil#createInstance->init()');
                    secondToolBar.push(editToolBar);
                } else {
                    LogUtil.log('不包含默认修改模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
                if (options.defaultToolBar[1].remove) {
                    LogUtil.log('默认删除模块开启->生成工具栏删除按钮', 'DoubleTablePageCreateUtil#createInstance->init()');
                    var removeToolBar = {
                        name: '删除',
                        glyphicon: 'remove',
                        onclick: options.module[0] + '.second.removeUI'
                    };
                    LogUtil.log('工具栏删除按钮处理完毕', 'DoubleTablePageCreateUtil#createInstance->init()');
                    secondToolBar.push(removeToolBar);
                } else {
                    LogUtil.log('不包含默认删除模块', 'DoubleTablePageCreateUtil#createInstance->init()');
                }
            } else {
                LogUtil.log('不包含默认增删改模块', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始创建额外的工具栏...', 'DoubleTablePageCreateUtil#createInstance->init()');
            var secondExtraToolBar = options.extraToolBar[1];
            if (secondExtraToolBar) {
                LogUtil.log('包含额外的工具栏,开始执行...', 'DoubleTablePageCreateUtil#createInstance->init()');
                for (var i = 0; i < secondExtraToolBar.length; i++) {
                    var tempFunctionName = 'extraToolbar' + i;
                    console.log(tempFunctionName)
                    eval('page.second.' + tempFunctionName + ' = secondExtraToolBar[i].onclick'); // 创建动态方法名的方法
                    secondExtraToolBar[i].onclick = page.options.module[0] + '.second.' + tempFunctionName;
                }
                secondToolBar = secondToolBar.concat(secondExtraToolBar);
            } else {
                LogUtil.log('不包含额外的工具栏', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            if (secondToolBar && secondToolBar.length > 0) {
                LogUtil.log('按钮组存在,正在生成按钮组...', 'DoubleTablePageCreateUtil#createInstance->init()');
                TablePageCreatePublicUtil.createToolBar(secondToolBar, page.options.module[1]);
            } else {
                LogUtil.log('按钮组不存在,跳过', 'DoubleTablePageCreateUtil#createInstance->init()');
            }

            LogUtil.log('开始初始化表格', 'DoubleTablePageCreateUtil#createInstance->init()');
            var listUrl2 = BaseConfig.preUrl + page.options.module[1] + '/list?token=' + BaseConfig.token; // 请求后台的URL（*）
            if (page.options.isSameModule) {
                listUrl2 = BaseConfig.preUrl + page.options.module[0] + '/list?secondModule=true&token=' + BaseConfig.token; // 请求后台的URL（*）
            }
            $('#' + page.options.module[1] + '_table').bootstrapTable({
                url: listUrl2,
                responseHandler: function (res) {
                    if (!res || res.code != '200') {
                        return [];
                    }
                    return res.obj;
                },
                method: 'get', // 请求方式（*）
                toolbar: '#' + page.options.module[1] + '_toolbar', // 工具按钮用哪个容器
                striped: true, // 是否显示行间隔色,默认为false
                cache: false, // 是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
                pagination: true, // 是否显示分页（*）
                sidePagination: "client", // 分页方式：client客户端分页，server服务端分页（*）
                pageNumber: 1, // 初始化加载第一页，默认第一页
                pageSize: 10, // 每页的记录行数（*）
                pageList: [10, 25, 50, 100], // 可供选择的每页的行数（*）
                search: true, // 是否显示表格搜索，此搜索是客户端搜索，不会进服务端
                showColumns: true, // 是否显示内容列下拉框
                showRefresh: true, // 是否显示刷新按钮
                clickToSelect: true, // 是否启用点击选中行
                smartDisplay: true, // 智能显示分页按钮
                columns: page.options.columns[1],
            });
            LogUtil.log('初始化表格结束', 'PageCreateUtil#createInstanceDoubleTablePage->init()');
            LogUtil.log('创建单表格页面成功!!!', 'PageCreateUtil#createInstanceDoubleTablePage->init()');
        };
        page.addUI = function () {
            LogUtil.log('用户点击添加按钮', 'page#addUI()');
            $('#' + page.options.module[0] + '_modal_add').modal('show');
        };
        page.add = function () {
            LogUtil.log('用户点击添加保存按钮', 'page#add()');
            var model = $('#' + page.options.module[0] + '_form_add').serialize();
            LogUtil.log('添加表单的内容->' + model, 'PageCreateUtil#add()');
            var resp = AjaxUtil.postJson(page.options.module[0] + '/add', model);
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module[0] + '_table').bootstrapTable('refresh');
                $('#' + page.options.module[0] + '_form_add')[0].reset();
                $('#' + page.options.module[0] + '_modal_add').modal('hide');
            }
        };
        page.editUI = function () {
            LogUtil.log('用户点击修改按钮', 'page#editUI()');
            var rows = $('#' + page.options.module[0] + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要修改的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能修改一条记录!");
                return;
            } else {
                $('#' + page.options.module[0] + '_form_edit').autofill(rows[0]);
                $('#' + page.options.module[0] + '_modal_edit').modal('show');
            }
        };
        page.edit = function () {
            LogUtil.log('用户点击修改保存按钮', 'page#edit()');
            var model = $('#' + options.module[0] + '_form_edit').serialize();
            LogUtil.log('修改后的表单的内容->' + model, 'page#edit()');
            var resp = AjaxUtil.postJson(page.options.module[0] + '/edit', model);
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module[0] + '_table').bootstrapTable('refresh');
                $('#' + page.options.module[0] + '_form_edit')[0].reset();
                $('#' + page.options.module[0] + '_modal_edit').modal('hide');
            }
        };
        page.removeUI = function () {
            LogUtil.log('用户点击删除按钮', 'page#removeUI()');
            var rows = $('#' + page.options.module[0] + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要删除的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能删除一条记录!");
                return;
            }
            SwalUtil.confirm(function () {
                LogUtil.log('确定删除->' + rows[0], 'page#removeUI()');
                var resp = AjaxUtil.postJson(page.options.module[0] + '/remove', rows[0]);
                if (resp) {
                    SwalUtil.success(resp.msg);
                    $('#' + page.options.module[0] + '_table').bootstrapTable('refresh');
                }
            });
        };

        page.second = {};
        page.second.addUI = function () {
            LogUtil.log('用户点击添加按钮', 'page#second.addUI()');
            $('#' + page.options.module[1] + '_modal_add').modal('show');
        };
        page.second.add = function () {
            LogUtil.log('用户点击添加保存按钮', 'page#second.add()');
            var model = $('#' + page.options.module[1] + '_form_add').serialize();
            LogUtil.log('添加表单的内容->' + model, 'PageCreateUtil#add()');
            if (page.options.isSameModule) {
                var resp = AjaxUtil.postJson(page.options.module[0] + '/add', model);
            } else {
                var resp = AjaxUtil.postJson(page.options.module[1] + '/add', model);
            }
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module[1] + '_table').bootstrapTable('refresh');
                $('#' + page.options.module[1] + '_form_add')[0].reset();
                $('#' + page.options.module[1] + '_modal_add').modal('hide');
            }
        };
        page.second.editUI = function () {
            LogUtil.log('用户点击修改按钮', 'page#editUI()');
            var rows = $('#' + page.options.module[1] + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要修改的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能修改一条记录!");
                return;
            } else {
                $('#' + page.options.module[1] + '_form_edit').autofill(rows[0]);
                $('#' + page.options.module[1] + '_modal_edit').modal('show');
            }
        };
        page.second.edit = function () {
            LogUtil.log('用户点击修改保存按钮', 'page#edit()');
            var model = $('#' + options.module[1] + '_form_edit').serialize();
            LogUtil.log('修改后的表单的内容->' + model, 'page#edit()');
            if (page.options.isSameModule) {
                var resp = AjaxUtil.postJson(page.options.module[0] + '/edit', model);
            } else {
                var resp = AjaxUtil.postJson(page.options.module[1] + '/edit', model);
            }
            if (resp) {
                SwalUtil.success(resp.msg);
                $('#' + page.options.module[1] + '_table').bootstrapTable('refresh');
                $('#' + page.options.module[1] + '_form_edit')[0].reset();
                $('#' + page.options.module[1] + '_modal_edit').modal('hide');
            }
        };
        page.second.removeUI = function () {
            LogUtil.log('用户点击删除按钮', 'page#removeUI()');
            var rows = $('#' + page.options.module[1] + '_table').bootstrapTable('getSelections');
            if (rows.length == 0) {
                SwalUtil.error("请选择要删除的记录!");
                return;
            } else if (rows.length > 1) {
                SwalUtil.error("一次只能删除一条记录!");
                return;
            }
            SwalUtil.confirm(function () {
                LogUtil.log('确定删除->' + rows[0], 'page#removeUI()');
                if (page.options.isSameModule) {
                    var resp = AjaxUtil.postJson(page.options.module[0] + '/remove', rows[0]);
                } else {
                    var resp = AjaxUtil.postJson(page.options.module[1] + '/remove', rows[0]);
                }
                if (resp) {
                    SwalUtil.success(resp.msg);
                    $('#' + page.options.module[1] + '_table').bootstrapTable('refresh');
                }
            });
        };
        page.init();
        return page;
    },

    createDoubleTableDom: function (module, column) { // 生成表格Dom节点
        var tableStr = '<div class="panel panel-default"><div class="panel-body"><div class="col-sm-' + column[0] + '"><table id="' + module[0] + '_table"></table></div><div class="col-sm-' + column[1] + '"><table id="' + module[1] + '_table"></table></div></div></div>';
        $('body').append(tableStr);
        LogUtil.log('创建表格页面元素(Dom)成功!', 'DoubleTablePageCreateUtil#createDoubleTableDom()');
    },
}

TablePageCreatePublicUtil = {
    setTitle: function (title) { // 设置标题
        if (title) {
            $("title").html(title);
            LogUtil.log('标题设置完成,标题为:' + title, 'TablePageCreatePublicUtil#setTitle()');
        } else {
            LogUtil.log('标题不存在,跳过!', 'TablePageCreatePublicUtil#setTitle()');
        }
    },
    createToolBar: function (toolbar, module) {
        var toolbarStr = '<div id="' + module + '_toolbar"><div class="btn-group">'
        for (var i = 0; i < toolbar.length; i++) {
            var onclick = toolbar[i].onclick + '()';
            var icon = 'asterisk';
            if (toolbar[i].glyphicon) {
                icon = toolbar[i].glyphicon;
            }
            toolbarStr += '<button type="button" class="btn btn-default" onclick="' + onclick + '"><i class="glyphicon glyphicon-' + icon + '"></i> ' + toolbar[i].name + ' </button>';
        }
        toolbarStr += '</div></div>';
        $('body').append(toolbarStr);
        LogUtil.log('按钮组创建完毕', 'TablePageCreatePublicUtil#createToolBar()');
    },
    createFormElement: function (form, label, name, dialogSetting) { // 自动生成表单控件
        var formElementStr = '';
        switch (form.type) {
            case 'hidden':
                formElementStr += '<input type="hidden" name="' + name + '"/><br>';
                break;
            case 'text':
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '"><input type="text" name="' + name + '"  class="form-control" placeholder="请输入文本"></div></div>';
                break;
            case 'select':
                var optionStr = '<option value = "0">请点击下拉框选择</option>';
                if (form.items) { // 选项不为空
                    if (form.items instanceof Array) { // 类型为option数组
                        for (var i = 0; i < form.items.length; i++) {
                            optionStr += '<option value = "' + form.items[i].value + '">' + form.items[i].name + '</option>'
                        }
                    } else if (typeof form.items === 'string') {
                        optionStr += TablePageCreatePublicUtil.getAjaxOptionItems(form.items);
                    }
                }
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '"><select class="form-control" name="' + name + '">' + optionStr + '</select></div></div>';
                break;
            case 'checkbox':
                var optionStr = '';
                if (form.items) { // 选项不为空
                    if (form.items instanceof Array) { // 类型为option数组
                        for (var i = 0; i < form.items.length; i++) {
                            optionStr += '<label class="checkbox-inline"><input type="checkbox" name="' + name + '" value="' + form.items[i].value + '">' + form.items[i].name + '</label>'
                        }
                    } else if (typeof form.items === 'string') {
                        optionStr += TablePageCreatePublicUtil.getAjaxOptionItems(form.items);
                    }
                }
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '">' + optionStr + '</div></div>';
                break;
            case 'radio':
                var optionStr = '';
                if (form.items) { // 选项不为空
                    if (form.items instanceof Array) { // 类型为option数组
                        for (var i = 0; i < form.items.length; i++) {
                            optionStr += '<label class="radio-inline"><input type="radio" name="' + name + '" value="' + form.items[i].value + '">' + form.items[i].name + '</label>'
                        }
                    } else if (typeof form.items === 'string') {
                        optionStr += TablePageCreatePublicUtil.getAjaxOptionItems(form.items);
                    }
                }
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '">' + optionStr + '</div></div>';
                break;
            case 'images':
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '"><input type="file" id = "' + form.id + '_fileinput" multiple name="file"  class="form-control"></div></div><input type="hidden" id = "' + form.id + '" name="' + name + '"/><br>';
                break;
            case 'date':
                formElementStr += '<div class="form-group"><label class="col-sm-' + dialogSetting.formTitle + ' control-label">' + label + '</label><div class="col-sm-' + dialogSetting.formInput + '"><input type="text" id = "' + form.id + '"  name="' + name + '"  class="form-control"></div></div><br>';
                break;
            default:
                break;
        }
        return formElementStr;
    },
    createQueryElement: function (query) {
        var queryElementStr = '';
        switch (query.type) {
            case 'text':
                queryElementStr += '<div class="form-group"><label>' +
                    query.name + '</label><input type="text" class="form-control" id="' +
                    query.id + '" placeholder="' +
                    query.palceholder + '"></div>&nbsp;&nbsp;';
                break;
            default:
                break;
        }
        return queryElementStr;
    },
    getAjaxOptionItems: function (url) {
        var optionStr = '';
        var resp = AjaxUtil.getJson(url);
        if (resp) {
            for (var i = 0; i < resp.obj.length; i++) {
                optionStr += '<option value = "' + resp.obj[i].value + '">' + resp.obj[i].name + '</option>'
            }
        }
        return optionStr;
    }
}